# -*- coding: utf-8 -*-
"""
提示词模板配置路由
提供提示词模板管理相关的Web接口
"""

from flask import Blueprint, render_template, jsonify, request, redirect, url_for
from common.logger import get_logger

logger = get_logger(__name__)

bp = Blueprint('prompt', __name__)


@bp.route('/')
def index():
    """提示词模板配置主页"""
    return render_template('prompt_config.html')


@bp.route('/list')
def list_prompts():
    """获取提示词模板列表"""
    try:
        # 这里应该从数据库获取提示词模板列表
        prompts = [
            {
                'id': 1,
                'name': '错误分析模板',
                'description': '用于分析错误日志的提示词模板',
                'content': '请分析以下错误日志，提供问题原因和解决方案：',
                'category': 'error_analysis',
                'created_at': '2024-01-01 10:00:00'
            },
            {
                'id': 2,
                'name': '性能分析模板',
                'description': '用于分析性能问题的提示词模板',
                'content': '请分析以下性能日志，识别性能瓶颈：',
                'category': 'performance_analysis',
                'created_at': '2024-01-01 10:00:00'
            }
        ]
        return jsonify({'success': True, 'data': prompts})
    except Exception as e:
        logger.error(f"获取提示词模板列表失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500


@bp.route('/create', methods=['GET', 'POST'])
def create_prompt():
    """创建提示词模板"""
    if request.method == 'GET':
        return render_template('prompt_create.html')
    
    try:
        data = request.get_json()
        name = data.get('name')
        description = data.get('description')
        content = data.get('content')
        category = data.get('category')
        
        # 这里应该保存到数据库
        logger.info(f"创建提示词模板: {name}")
        
        return jsonify({'success': True, 'message': '提示词模板创建成功'})
    except Exception as e:
        logger.error(f"创建提示词模板失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500


@bp.route('/<int:prompt_id>')
def get_prompt(prompt_id):
    """获取提示词模板详情"""
    try:
        # 这里应该从数据库获取提示词模板详情
        prompt = {
            'id': prompt_id,
            'name': '示例模板',
            'description': '这是一个示例提示词模板',
            'content': '请分析以下日志内容：',
            'category': 'general',
            'created_at': '2024-01-01 10:00:00'
        }
        return jsonify({'success': True, 'data': prompt})
    except Exception as e:
        logger.error(f"获取提示词模板详情失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500


@bp.route('/<int:prompt_id>/edit', methods=['GET', 'POST'])
def edit_prompt(prompt_id):
    """编辑提示词模板"""
    if request.method == 'GET':
        return render_template('prompt_edit.html', prompt_id=prompt_id)
    
    try:
        data = request.get_json()
        name = data.get('name')
        description = data.get('description')
        content = data.get('content')
        category = data.get('category')
        
        # 这里应该更新数据库
        logger.info(f"更新提示词模板 {prompt_id}: {name}")
        
        return jsonify({'success': True, 'message': '提示词模板更新成功'})
    except Exception as e:
        logger.error(f"更新提示词模板失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500


@bp.route('/<int:prompt_id>/delete', methods=['DELETE'])
def delete_prompt(prompt_id):
    """删除提示词模板"""
    try:
        # 这里应该从数据库删除
        logger.info(f"删除提示词模板: {prompt_id}")
        
        return jsonify({'success': True, 'message': '提示词模板删除成功'})
    except Exception as e:
        logger.error(f"删除提示词模板失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500


@bp.route('/categories')
def get_categories():
    """获取提示词模板分类"""
    try:
        categories = [
            {'id': 'error_analysis', 'name': '错误分析'},
            {'id': 'performance_analysis', 'name': '性能分析'},
            {'id': 'security_analysis', 'name': '安全分析'},
            {'id': 'general', 'name': '通用分析'}
        ]
        return jsonify({'success': True, 'data': categories})
    except Exception as e:
        logger.error(f"获取提示词模板分类失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500


@bp.route('/<int:prompt_id>/test', methods=['POST'])
def test_prompt(prompt_id):
    """测试提示词模板"""
    try:
        data = request.get_json()
        test_content = data.get('test_content')
        
        # 这里应该调用LLM进行测试
        logger.info(f"测试提示词模板 {prompt_id}")
        
        # 模拟测试结果
        test_result = {
            'prompt_id': prompt_id,
            'test_content': test_content,
            'result': '这是一个测试结果示例',
            'timestamp': '2024-01-01 10:00:00'
        }
        
        return jsonify({'success': True, 'data': test_result})
    except Exception as e:
        logger.error(f"测试提示词模板失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500


@bp.route('/<int:prompt_id>/usage')
def get_prompt_usage(prompt_id):
    """获取提示词模板使用统计"""
    try:
        # 这里应该从数据库获取使用统计
        usage_stats = {
            'total_usage': 100,
            'success_rate': 0.95,
            'avg_response_time': 2.5,
            'last_used': '2024-01-01 10:00:00'
        }
        return jsonify({'success': True, 'data': usage_stats})
    except Exception as e:
        logger.error(f"获取提示词模板使用统计失败: {e}")
        return jsonify({'success': False, 'error': str(e)}), 500 